package com.eastfair.auth.service;

import com.eastfair.auth.dto.OrganizationDTO;
import com.eastfair.auth.entity.Organization;
import com.eastfair.core.base.R;

import java.util.List;

/**
 * <p>
 * 展会组织操作业务接口
 *
 * </p>
 *
 * @author ligang
 * @date 2021-09-07
 */
public interface ExhibitionOrganizationService {

    /**
     * 创建展会
     *
     * @param organizationDTO 实体
     *        orgType 节点类型
     *        name 节点名称
     *        parentId 父级节点id
     *        resourceId 资源id
     *        resourceType 资源类型
     * @return
     */
    R<Organization> createExhibition(OrganizationDTO organizationDTO);

    /**
     * 修改展会
     *
     * @param organizationDTO 实体
     *        orgType 节点类型
     *        name 节点名称
     *        parentId 父级节点id
     *        resourceId 资源id
     *        resourceType 资源类型
     * @return
     */
    R<Organization> updExhibition(OrganizationDTO organizationDTO);


    /**
     * 创建展会下的展商，观众，主办分类
     *
     * @param orgId 项目组织id
     * @return
     */
    R createClassifyOfExhibition(Long orgId);

    /**
     * 添加公司到展商
     *
     * @param organizationDTO 组织节点实体
     * @param exhibitionId 会展id
     * @return
     */
    R<Organization> addCompany(OrganizationDTO organizationDTO,Long exhibitionId);


    /**
     * 剔除展商下的公司
     * @param organizationDTO 组织节点实体
     * @param exhibitionId 会展id
     * @return
     */
    R<Organization> removeCompany(OrganizationDTO organizationDTO,Long exhibitionId);



    /**
     * 剔除公司的展商员工
     * @param resourceId 资源id
     * @param removeUserIds 剔除用户id
     * @return
     */
    R removeUseridOfExhibitionCompany(Long resourceId, List<Long> removeUserIds);

    /**
     * 添加公司的展商员工
     * @param resourceId 资源id
     * @param userIds 用户id
     * @return
     */
    R addUseridOfExhibitionCompany(Long resourceId, List<Long> userIds);

    /**
     * 查询会展所在组织
     * @param exhibitionId
     * @return
     */
    Organization findExibitionOrg(Long exhibitionId);

    /**
     * 查询会展下的公司所在组织
     * @param exhibitionId
     * @return
     */
    Organization findCompanyOfExibitionOrg(Long exhibitionId);
}
